#ifndef THRESHOLD_EVALUATOR_H__CMU_
#define THRESHOLD_EVALUATOR_H__CMU_

#include <string>
using namespace std;

class threshold_evaluator {
public :
	virtual double get_value(int tp, int tn, int fp, int fn) = 0;
	virtual string get_name() = 0;	
};

class precision : public threshold_evaluator {
public :
	virtual double get_value(int tp, int tn, int fp, int fn);
	virtual string get_name(){return "precesion";}
};

class recall : public threshold_evaluator {
public :
	virtual double get_value(int tp, int tn, int fp, int fn);
	virtual string get_name(){return "recall";}
};

class fpr : public threshold_evaluator {
public :
	virtual double get_value(int tp, int tn, int fp, int fn);
	virtual string get_name(){return "fpr";}
};

class fnr : public threshold_evaluator {
public :
	virtual double get_value(int tp, int tn, int fp, int fn);
	virtual string get_name(){return "fnr";}
};

#endif